package com.iot.device.service;

import com.iot.device.domain.GasClient;
import com.iot.device.dto.GasClientDataStatistics;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Service接口
 * 
 * @author iot
 * @date 2023-04-14
 */
public interface IStatisticsService
{
    Map<String, Long> statisticsTotalGasEvent(Long userId, Date todayStart, Date monthStart);

    Map<String, Long> statisticsTotalGasEventGroupByType(Long userId);

    Map<String, Long> statisticsTodayGasEventGroupByType(Long userId, Date todayStart);

    Map<String, Long> statisticsMonthGasEventGroupByType(Long userId, Date monthStart);

    List<Map<String, Object>> selectGasEventTrendStatisticsByDuration(Date startTime, Date endTime, Long userId);

    Map<String, Object> selectGasEventThisYearStatistics(Long userId, Date todayStart, Date monthStart);

    List<GasClientDataStatistics> selectGasClientDataStatistics(Long userId, int hourLimit, Long deptId);

    Map<String, Long> statisticsTotalQuakeEvent(Long userId, Date todayStart, Date monthStart);

    Map<String, Object> selectQuakeEventThisYearStatistics(Long userId, Date todayStart, Date monthStart);

    List<Map<String, Object>> selectQuakeEventTrendStatisticsByDuration(Date startTime, Date endTime, Long userId);

    Map<String, Long> statisticsTotalQuakeEventGroupByType(Long userId);

    Map<String, Long> statisticsTodayQuakeEventGroupByType(Long userId, Date todayStart);

    Map<String, Long> statisticsMonthQuakeEventGroupByType(Long userId, Date monthStart);

    Map<String, Long> statisticsTotalBeidouEvent(Long userId, Date todayStart, Date monthStart);

    Map<String, Object> selectBeidouEventThisYearStatistics(Long userId, Date todayStart, Date monthStart);

    List<Map<String, Object>> selectBeidouEventTrendStatisticsByDuration(Date startTime, Date endTime, Long userId);

    Map<String, Long> statisticsTotalBeidouEventGroupByType(Long userId);

    Map<String, Long> statisticsTodayBeidouEventGroupByType(Long userId, Date todayStart);

    Map<String, Long> statisticsMonthBeidouEventGroupByType(Long userId, Date monthStart);

    Map<String, Long> statisticsTotalPressureSensorEvent(Long userId, Date todayStart, Date monthStart);

    Map<String, Long> statisticsTotalPressureSensorEventGroupByType(Long userId);

    Map<String, Long> statisticsTodayPressureSensorEventGroupByType(Long userId, Date todayStart);

    Map<String, Long> statisticsMonthPressureSensorEventGroupByType(Long userId, Date monthStart);

    List<Map<String, Object>> selectPressureSensorEventTrendStatisticsByDuration(Date startTime, Date endTime, Long userId);

    Map<String, Object> selectPressureSensorEventThisYearStatistics(Long userId, Date startTime, Date endTime);
}
